const jwt = require('jsonwebtoken');
const pool = require('../db');

module.exports = async (req, res, next) => {
  try {
    // 获取token
    const token = req.header('authorization').split(' ')[1];

    // 检查token是否存在
    if (!token) {
      return res.status(401).json({ message: '无token，授权被拒绝' });
    }

    // 验证token
    const decoded = jwt.verify(token, process.env.JWT_SECRET);

    // 检查用户是否存在
    const [rows] = await pool.execute('SELECT id, username, role FROM users WHERE id = ?', [decoded.id]);

    if (rows.length === 0) {
      return res.status(401).json({ message: '无效的token，用户不存在' });
    }

    // 将用户信息添加到请求对象
    req.user = rows[0];
    next();
  } catch (error) {
    console.error('认证失败:', error);
    res.status(401).json({ message: '无效的token' });
  }
};